package com.wmx.rocketmq.helloFriend;

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * RocketMQ RocketMQListener 消息监听，
 * <p>
 * 1）实现 RocketMQListener<T> 接口：T 表示接收的数据类型，可以是普通的 String，也可以是 Map 或者 Java Bean 等
 * 2）RocketMQMessageListener：表示监听/订阅消息
 * 3）topic = "WMX_TOP"：表示订阅主题-WMX_TOP的消息，主题不存在时也不影响启动，如果主题之前已经存在消息，而这里是第一次启动，则
 * 默认也会将之前的消息接收过来
 * 4）同一个应用中可以有多个 RocketMQMessageListener 监听同一个 topic
 * 5）consumerGroup：定义消费者组名称，当应用采用多实例部署时，同一个消费者组下对同一个 topic 只会有一个消费者进行消费
 * 6）同一个应用中，不同 RocketMQMessageListener 的 consumerGroup 名称不能相同，否则启动报错.
 *
 * @author wangMaoXiong
 * @version 1.0
 * @date 2020/12/13 12:54
 */
@Component
@RocketMQMessageListener(topic = "wmx2", consumerGroup = "my-consumer_test-topic-2")
public class MyConsumer2 implements RocketMQListener<Map<String, Object>> {
    private static final Logger log = LoggerFactory.getLogger(MyConsumer2.class);

    @Override
    public void onMessage(Map<String, Object> msg) {
        log.info("received msg2: {}", msg);
    }
}
